package com.atguigu01.string.exer2;

import org.junit.Test;

import java.util.Arrays;

/**
 * @author NoobMaster69  * @date 2024/6/16 0016 星期日 12:06
 */
public class TestC {
    //    题目2：将一个字符串进行反转。将字符串中指定部分进行反转。
//    比如"abcdefg"反转为"abfedcg"
    @Test
    public void test1() {
        String s = "abcdefg";
        String s1 = revers1(s, 2, 5);
        System.out.println(s1);
    }

    /**
     * 方式一
     *
     * @param str        要反转的字符串
     * @param StartIndex 开始值
     * @param endIndex   结束值
     * @return 返回字符串
     */
    public String revers1(String str, int StartIndex, int endIndex) {
        char[] charArray = str.toCharArray();

        for (int i = StartIndex, j = endIndex; i < j; i++, j--) {
            char temp = charArray[i];
            charArray[i] = charArray[j];
            charArray[j] = temp;
        }

        return Arrays.toString(charArray);

    }

    //    题目3：获取一个字符串在另一个字符串中出现的次数。
//    比如：获取"ab"在 "abkkcadkabkebfkabkskab" 中出现的次数
    @Test
    public void test2() {
        String str = "abkkcadkabkebfkabkskab";
        String subStr = "ab";
        System.out.println(getSubStringCount(str, subStr));
    }

    /**
     * 判断subStr在str中出现的次数
     * @param str
     * @param subStr
     * @return  返回次数
     */
    public int getSubStringCount(String str, String subStr) {
        int count = 0;
        if (str.length() < subStr.length()) {
            int index = str.indexOf(subStr);
            while (index >= 0) {
                index = str.indexOf(subStr, index + subStr.length());
                count++;
            }
        }
        return count;

    }

//    题目4：获取两个字符串中最大相同子串。比如：
//    str1 = "abcwerthelloyuiodef";
//    str2 = "cvhellobnm"
//    提示：将短的那个串进行长度依次递减的子串与较长的串比较。


}
